//
//  ast.h
//  LTLBMC
//
//  Created by GD Huang on 5/18/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#ifndef LTLBMC_ast_h
#define LTLBMC_ast_h

#include <string>
#include <vector>
#include <ext/hash_map>


/*
 The Abstract Syntax of CIL
 */

#include "file.h"


/*
 Globals
 */

#include "global.h"


/*
 Types
 */

#include "typ.h"
#include "ikind.h"
#include "fkind.h"


/*
 Attributes
 */

#include "attribute.h"
#include "attrparam.h"


/*
 Structures
 */

#include "compinfo.h"


/*
 Structure fields
 */

#include "fieldinfo.h"


/*
 Enumerations
 */

#include "enuminfo.h"
#include "typeinfo.h"


/*
 Variables
 */

#include "varinfo.h"
#include "storage.h"


/*
 Expressions
 */

#include "binop.h"
#include "unop.h"
#include "exp.h"


/*
 Constants
 */

#include "constant.h"


/*
 Lvalues
 */

#include "lval.h"
#include "lhost.h"
#include "offset.h"


/*
 Initializers
 */

#include "init.h"
#include "initinfo.h"


/*
 Function definitions.
 */

#include "fundec.h"
#include "block.h"


/*
 Statements
 */

#include "label.h"
#include "stmt.h"
#include "stmtkind.h"


/*
 Instructions
 */

#include "instr.h"
#include "location.h"
#include "typsig.h"


#include "astVisitor.h"

#include "ext/dom.h"


cilast::file* parse(std::string filePath);
extern cilast::fundec* mainFundec;
extern __gnu_cxx::hash_map<long, void*> symbolTable;



#endif

